package Relatorios;

import hibernate.dao.AgendamentoDAO;
import hibernate.dao.ProdutoDAO;
import hibernate.entity.Agendamento;
import hibernate.entity.Produto;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.table.AbstractTableModel;

public class EstoqueTabelModel extends AbstractTableModel {
	private final int COL_NOME = 0;
	private final int COL_MARCA = 1;
	private final int COL_ESTOQUE = 2;
	private List<Produto> listaProduto;

	public EstoqueTabelModel() throws ParseException {
		listaProduto = new ArrayList<Produto>();
		ProdutoDAO produtos = new ProdutoDAO();

		for (Produto p : produtos.getListaProdutos()) {
			listaProduto.add(p);

		}
	}

	@Override
	public int getColumnCount() {

		return 3;
	}

	@Override
	public int getRowCount() {

		return listaProduto.size();
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {

		Produto p = listaProduto.get(rowIndex);
		if (columnIndex == COL_NOME) {
			return p.getNomeProduto();
		} else if (columnIndex == COL_MARCA) {
			return p.getMarca();
		} else if (columnIndex == COL_ESTOQUE) {
			return p.getQuantidadeEstoque();
		} 
		
		fireTableDataChanged();
		return "";
	}

	

	public String getColumnName(int column) {
	
		if (column == COL_NOME) {
			return "Produto";
		} else if (column == COL_MARCA) {
			return "Marca";
		} else if (column == COL_ESTOQUE) {
			return "Estoque";
		} 
		return "";
	}

	public Class getColumnClass(int columnIndex) {
		
		if (columnIndex == COL_NOME) {
			return String.class;
		} else if (columnIndex == COL_MARCA) {
			return String.class;
		} else if (columnIndex == COL_ESTOQUE) {
			return int.class;
		} 
		return String.class;
	}

	public Produto getValue(int rowIndex) {
	
		Produto p = listaProduto.get(rowIndex);
		return p;
	}

	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		
		return false;
	}

	public void inserir(Produto p) {
		listaProduto.add(p);

		fireTableDataChanged();
	}

	public void excluir(int pos) {
		listaProduto.remove(pos);

		fireTableDataChanged();
	}

	public Produto getProduto(int pos) {
		if (pos < 0 || pos >= listaProduto.size()) {
			return null;
		}

		return listaProduto.get(pos);
	}
	

}
